﻿using System.Collections.Generic;
using MaxStoreErp.Core.Exceptions;
using MaxStoreShop.Domain.Directories;
using MaxStoreShop.Logic.RepositoriesContracts.Directories;
using MaxStoreShop.Logic.ServicesContracts.Directories;

namespace MaxStoreShop.Logic.Services.Directories
{
    public class ProductCategoryService : IProductCategoryService
    {
        readonly IProductCategoryRepository _repository;

        public ProductCategoryService(IProductCategoryRepository repository)
        {
            _repository = repository;
        }

        public IEnumerable<ProductCategory> GetAllProductCategories()
        {
            return _repository.GetAllProductCategories();
        }

        public void DeleteProductCategory(ProductCategory productCategory)
        {
            if (productCategory == null)
                throw new ErpRuntimeException("Не указана категория продуктов для удаления!");

            _repository.DeleteProductCategory(productCategory.Id);
        }

        public void SaveProductCategory(ProductCategory productCategory)
        {
            if (productCategory == null)
                throw new ErpRuntimeException("Не указана категория продуктов для сохранения!");

            if (string.IsNullOrWhiteSpace(productCategory.Name))
                throw new ErpRuntimeException("Не указано наименование категории продуктов для сохранения!");

            _repository.SaveProductCategory(productCategory);
        }
    }
}
